﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project.Co_DataTransformationPrototype
{
    public abstract class ModelBuilder
    {
        // The model root is used to access the current diagrams element store
        private static ModelRoot modelRoot;
        // This boolean is used as a flag to determine if the tool is in import-mode
        public static bool isImporting = false;

        public virtual ModelRoot objModelRoot
        {
            get { return modelRoot; }
            set { modelRoot = value; }
        }

        // Function to be used to establish connection with the source of the model data
        public abstract void BuildDiagram(string mainEntityName);
        // Function to be used to create entities
        public abstract System.Guid createEntity<T>(T entity, bool hasForeignKey, string fkAttributeName, System.Guid referencedEntityId);
        // Function to be used to create references between 2 entities
        public abstract void createLink(Entity elementA, Entity elementB, string attributeInA, string attributeInB);
    }
}
